iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
生成式 AI

Gemini 多模態大型語言模型大小事系列 第 10

Gemini 多模態大型語言模型大小事 Day10 - 程式碼執行

  • 分享至 

  • xImage
  •  

前言

    程式環境都會用colab 來執行程式,如果要在其他環境執行,請自行修改哦

colab 事前準備:設定專案和 API 金鑰
載入gemini

#pip install -q -U google-generativeai
import google.generativeai as genai

API 金鑰

from google.colab import userdata
API_KEY=userdata.get('GOOGLE_API_KEY')

#genai.configure(api_key="YOUR_API_KEY")

# Configure the client library by providing your API key.
genai.configure(api_key=API_KEY)

程式碼執行

Gemini API 程式碼執行功能可讓模型生成及執行的程式碼,並從結果反覆學習,直到抵達 最終輸出內容您可以使用這項程式碼執行功能建構應用程式 但這些優點可說是靠程式碼推理 並產出文字適用對象 舉例來說,您可以在應用程式中執行程式碼,以解決方程式或 則會處理文字

允許在模型上執行程式碼

model = genai.GenerativeModel(
    model_name='gemini-1.5-pro',
    tools='code_execution')

response = model.generate_content((
    '請用繁體中文回答' 
    '前 50 個質數的和是多少?' 
    '生成並運行計算程式碼,並確保獲得全部 50 個結果。'
    '產生並運行計算程式碼,並確保獲得全部 50 個結果。'))

print(response.text)
好的,我會用繁體中文回答您的問題。

您的問題是:前 50 個質數的和是多少?

讓我先寫一個程式來找出前 50 個質數,然後再算出它們的總和。

#### 回答
def is_prime(n):
  """判斷一個數是否為質數"""
  if n <= 1:
    return False
  for i in range(2, int(n**0.5) + 1):
    if n % i == 0:
      return False
  return True


primes = []
n = 2
while len(primes) < 50:
  if is_prime(n):
    primes.append(n)
  n += 1

print(f"前 50 個質數為: {primes}")
print(f"它們的總和是: {sum(primes)}")

前 50 個質數為: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229]
它們的總和是: 5117
因此,前 50 個質數的總和是 **5117**。 

在要求中啟用程式碼

model = genai.GenerativeModel(model_name='gemini-1.5-pro')

response = model.generate_content(
    ('請用繁體中文回答' 
    '前 50 個質數的和是多少?' 
    '生成並運行計算程式碼,並確保獲得全部 50 個結果。'
    '使用 Kotlin 程式碼來完成這個任務'),
    tools='code_execution')

print(response.text)

回答

好的,我會用 Kotlin 程式碼計算前 50 個質數的總和。

首先,我們需要一個函數來檢查一個數字是否為質數:


kotlin
fun isPrime(num: Int): Boolean {
    if (num <= 1) return false
    for (i in 2..Math.sqrt(num.toDouble()).toInt()) {
        if (num % i == 0) return false
    }
    return true
}

接下來,我們可以創建一個函數來生成質數並計算總和:

fun sumOfPrimes(n: Int): Int {
    val primes = mutableListOf<Int>()
    var num = 2
    var sum = 0
    while (primes.size < n) {
        if (isPrime(num)) {
            primes.add(num)
            sum += num
        }
        num++
    }
    return sum
}

最後,我們可以調用 sumOfPrimes(50) 來獲得前 50 個質數的總和:

fun main() {
    val sum = sumOfPrimes(50)
    println("前 50 個質數的總和為:$sum")
}

這段程式碼將輸出:

前 50 個質數的總和為:5117

在即時通訊中使用程式碼

model = genai.GenerativeModel(model_name='gemini-1.5-pro',
                              tools='code_execution')

chat = model.start_chat()

response = chat.send_message((
    '請用繁體中文回答' 
    '前 50 個質數的和是多少?' 
    '生成並運行計算程式碼,並確保獲得全部 50 個結果。'
    '使用 go 程式碼來完成這個任務'))

print(response.text)

回答

好的,我會用 Go 語言編寫一個程式來找出前 50 個質數的總和。

首先,我們需要一個函數來檢查一個數字是否為質數:

go
func isPrime(n int) bool {
  if n <= 1 {
    return false
  }
  for i := 2; i*i <= n; i++ {
    if n%i == 0 {
      return false
    }
  }
  return true
}

接著,我們可以使用這個函數來找到前 50 個質數並計算它們的總和:

package main

import "fmt"

func main() {
  count := 0
  sum := 0
  num := 2

  for count < 50 {
    if isPrime(num) {
      sum += num
      count++
    }
    num++
  }

  fmt.Println("前 50 個質數的總和為:", sum)
}

這個程式會逐一檢查數字,如果找到一個質數,它會將其加到 sum 並且將 count 增加 1。當 count 達到 50 時,迴圈就會停止,並印出前 50 個質數的總和。

執行這個程式,你會得到以下輸出:

前 50 個質數的總和為:5117

限制

  • 模型只能產生及執行程式碼。無法傳回其他構件 例如媒體檔案
  • 這項功能不支援檔案 I/O,或是涉及非文字輸出的用途 (例如資料圖表或上傳的 CSV 檔案)。
  • 程式碼在逾時前最多可執行 30 秒。
  • 在某些情況下,啟用程式碼執行功能可能導致其他區域發生迴歸問題 例如寫故事
  • 不同模型使用程式碼的方式可能有所不同 成功執行。Gemini 1.5 Pro 的表現最優異

上一篇
Gemini 多模態大型語言模型大小事 Day9 - 探索 Gemini API 的音訊功能
下一篇
Gemini 多模態大型語言模型大小事 Day11 - 使用 Gemini API 產生結構化輸出
系列文
Gemini 多模態大型語言模型大小事18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言